#include <iostream>
#include <string>
#include <jsoncpp/json/json.h>

typedef struct request
{
    int x;
    int y;
    char op;
} request_t;
int main()
{
    //反序列化的过程
    std::string json_string = R"({"datax":10,"datay":20,"operator":42})"; // R"(字符串)"：C++11的新语法，拿到原生字符串
    Json::Reader reader;
    Json::Value root;
    reader.parse(json_string, root);
    request_t req; //存放反序列化的字符串

    req.x = root["datax"].asInt();
    req.y = root["datay"].asInt();
    req.op = (char)root["operator"].asInt();

    std::cout<<req.x<<req.op<<req.y<<std::endl;
    //******************************************************
    //序列化的过程
    // 1.结构化的数据
    // request_t req = {10, 20, '*'};
    // // 2.
    // Json::Value root; // kv键值对，万精油对象什么都可以装
    // root["datax"] = req.x;
    // root["datay"] = req.y;
    // root["operator"] = req.op;

    // // 3.
    // // Json::StyledWriter writer;
    // Json::FastWriter writer;

    // //实际在网络传输结构化数据时候，我们发送的是write函数返回的序列化字符串
    // std::string json_string = writer.write(root); //返回的是序列化的字符串

    // std::cout << json_string << std::endl;
    return 0;
}
